home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / objects / form / button.s next >
Text File  |  1998-08-17  |  5KB  |  176 lines

  1.     DATA
  2.  
  3. GWVA_FBUTTON_DEFAULT_METHODLIST:
  4.     GWVA_OBJ_STRUCT_METHOD    GWVA_METHOD_FORM_CLICK,GWVA_FBUTTON_PRG_CLICK
  5.     GWVA_OBJ_STRUCT_METHOD    GWVA_METHOD_FORM_IFACE_CLICK,GWVA_FBUTTON_PRG_IFACE_CLICK
  6.     GWVA_OBJ_STRUCT_METHOD_END_LIST
  7.  
  8.     TEXT
  9.  
  10. ;------------------------------------------------------------------------------
  11. ; Method name : GWVA_METHOD_FORM_IFACE_CLICK
  12. ; Asm label   : GWVA_FBUTTON_PRG_IFACE_CLICK
  13. ; Description : Regénération d'un clic sur cet objet
  14. ;
  15. ; in  : a0.l = pointeur sur l'objet
  16. ; in  : a1.l = pointeur sur la fenetre contenant l'objet
  17. ; out : d6.w = GWVA_PRGRET_CONSUMED
  18. ;
  19. ; 16/08/98 : Création
  20. ;------------------------------------------------------------------------------
  21. GWVA_FBUTTON_PRG_IFACE_CLICK:
  22.  
  23.     ; bidouille infaame (ne marche pas si objet encapsulé)
  24.     move.l GWVA_OBJ_FATHER_PTR(a0),a1
  25.  
  26.     clr.l d0
  27.     move.w GWVA_FBTON_OBJ_MAIN_IDX(a0),d0
  28.     move.l #1,d1        ; droit
  29.     move.l #1,d2        ; 1 clic
  30.  
  31.     move.l a1,a4
  32.     lea GWVA_FORM_CLICK_IN_STRUCT,a1
  33.     move #0,GWVA_FORM_CLICK_IN_FATHER_IDX(a1)    ; je le connais pas ...
  34.     move.l a4,GWVA_FORM_CLICK_IN_WIND_PTR(a1)
  35.     move.l GWVA_WRSC_OBJ_TREE_PTR(a4),GWVA_FORM_CLICK_IN_TREE_PTR(a1)
  36.  
  37.     GWVA_CALL_METHOD_DIFF_METH_SAME_CLASS    #GWVA_METHOD_FORM_CLICK
  38.  
  39.     rts
  40.  
  41. ;------------------------------------------------------------------------------
  42. ; Method name : GWVA_METHOD_FORM_CLICK
  43. ; Asm label   : GWVA_FBUTTON_PRG_CLICK
  44. ; Description : Méthode de traitement d'un clic dans un formulaire
  45. ;
  46. ; Rq  : cette méthode traite tout ce qui est bouton, sauf radio-bouton
  47. ;
  48. ; in  : a0.l = pointeur sur l'objet
  49. ; in  : a1.l = pointeur sur le buffer d'entrée typé GWVA_FORM_CLICK_IN
  50. ; in  : d0.l = [ X.w | num gem.w ]
  51. ; in  : d1.l = [ Y.w | mouse button.w ]
  52. ; in  : d2.l = [ Key state.w | mouse count.w ]
  53. ; out : d6.w = GWVA_PRGRET_NOT_CONSUMED ou GWVA_PRGRET_CONSUMED
  54. ;
  55. ; 14/02/98 : Création
  56. ; 07/03/98 : Appel du form_button
  57. ;------------------------------------------------------------------------------
  58. GWVA_FBUTTON_PRG_CLICK:
  59.  
  60.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_ON_FORM_CLICK
  61.     cmp.w #GWVA_SEARCH_EXEC_CONSUMED,d6
  62.     beq .pas_buttonclick_car_on_buttonclick_consomme
  63.  
  64.     ;-----------------------------------;
  65.  
  66.     cmp.w GWVA_FBTON_OBJ_MAIN_IDX(a0),d0
  67.     bne .je_ne_suis_pas_concerne_par_ce_msg
  68.  
  69.     lea FBUTTON_TMP_IN_BUF,a3
  70.     move.l GWVA_FORM_CLICK_IN_WIND_PTR(a1),GWVA_FORM_BUTTON_IN_WIND_PTR(a3)
  71.     move.l GWVA_FORM_CLICK_IN_TREE_PTR(a1),GWVA_FORM_BUTTON_IN_TREE_PTR(a3)
  72.  
  73.     save.l a1            ; seul ce paramètre bouge
  74.  
  75.     move.l a3,a1
  76.     lea FBUTTON_TMP_OUT_BUF,a2
  77.  
  78.     GWVA_CALL_METHOD_DIFF_METH_SAME_CLASS    #GWVA_METHOD_FORM_BUTTON
  79.  
  80.     move.w GWVA_FORM_BUTTON_OUT_NEW_STATE(a2),d3
  81.     move.w d3,GWVA_FBTON_OBJ_STATE(a0)
  82.     move.w GWVA_FORM_BUTTON_OUT_NEW_TYPE(a2),d4
  83.     move.w GWVA_FORM_BUTTON_OUT_OLD_STATE(a2),d5
  84.     move.w GWVA_FORM_BUTTON_OUT_RET_CODE(a2),d6
  85.  
  86.     load.l a1            ; seul ce paramètre bouge
  87.  
  88.     ; pas d'after donc on peut scratcher les params d'entrée
  89.     ; on positionne a1/a2, car ils servent pour tous les évènements
  90.     move.l GWVA_FORM_CLICK_IN_TREE_PTR(a1),a2    ; tant que a1 est bon
  91.     move.l GWVA_FORM_CLICK_IN_WIND_PTR(a1),a1
  92.  
  93.     ;-----------------------------------;
  94.  
  95.     ; émettre clicked / changed ...
  96.  
  97. *    btst #DISABLED,d3        ; ceci est fait dans le form button
  98. *    bne .object_disabled
  99.  
  100.     save.l d0-d2
  101.  
  102.     tst d6
  103.     bne .propriete_exit_non_activee
  104.  
  105.     cmp.w d5,d3
  106.     bne.s .etat_a_change
  107.  
  108.     ; Attention : positionner les paramètres d'entrée + sauver les courants
  109.     ; ! on ne prépare pas les paramètres comme il faut pour le moment !
  110.     swap d0
  111.     move.w d1,d0
  112.     swap d0
  113.     move.w d4,d1    ; type
  114.     swap d1
  115.     move d3,d1        ; state
  116.     cmp.w #2,d2
  117.     beq.s .double_click
  118.     swap d2
  119.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_FORM_CLICKED
  120.     bra.s .clicked_ok
  121. .double_click:
  122.     swap d2
  123.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_FORM_DCLICKED
  124. .clicked_ok:
  125.     bra.s .fin_click_ok
  126.  
  127.     ;-------------------;
  128.  
  129. .propriete_exit_non_activee:
  130.     cmp.w d5,d3
  131.     beq.s .etat_a_pas_change
  132.  
  133. .etat_a_change:
  134.  
  135.     move.w d4,d1    ; type
  136.     swap d1
  137.     move d3,d1        ; state
  138.     swap d2
  139.  
  140.     ; Attention : positionner les paramètres d'entrée + sauver les courants
  141.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_FORM_CHANGED
  142.  
  143.     btst #SELECTED,d1    ; ruse : d3 se retrouve dans d1
  144.     beq.s .pas_selectionne
  145.  
  146.     ; Attention : positionner les paramètres d'entrée + sauver les courants
  147.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_FORM_SELECTED
  148.  
  149.     bra.s .fin_click_ok
  150.  
  151. .pas_selectionne:
  152.     ; Attention : positionner les paramètres d'entrée + sauver les courants
  153.     GWVA_EXEC_VISUAL_EVENT    #GWVA_METHOD_FORM_UNSELECTED
  154.  
  155. .etat_a_pas_change:
  156. .fin_click_ok:
  157.  
  158.     load.l d0-d2
  159.  
  160.     ;-----------------------------------;
  161.  
  162. .pas_buttonclick_car_on_buttonclick_consomme:
  163.     moveq #GWVA_PRGRET_CONSUMED,d6
  164.     rts
  165.  
  166. .je_ne_suis_pas_concerne_par_ce_msg:
  167.     moveq #GWVA_PRGRET_NOT_CONSUMED,d6
  168.     rts
  169.  
  170.  BSS
  171. FBUTTON_TMP_IN_BUF:    ds.b GWVA_FORM_BUTTON_IN_STRUCT_LENGTH
  172. FBUTTON_TMP_OUT_BUF:    ds.b GWVA_FORM_BUTTON_OUT_STRUCT_LENGTH
  173.  TEXT
  174.  
  175. ;------------------------------------------------------------------------------
  176.